package gitee

import "time"

type Repository struct {
	ID                  int64           `json:"id"`
	FullName            string          `json:"full_name"`
	HumanName           string          `json:"human_name"`
	URL                 string          `json:"url"`
	Namespace           Namespace       `json:"namespace"`
	Path                string          `json:"path"`
	Name                string          `json:"name"`
	Owner               User            `json:"owner"`
	Assigner            User            `json:"assigner"`
	Description         string          `json:"description"`
	Private             bool            `json:"private"`
	Public              bool            `json:"public"`
	Internal            bool            `json:"internal"`
	Fork                bool            `json:"fork"`
	HTMLURL             string          `json:"html_url"`
	SSHURL              string          `json:"ssh_url"`
	ForksURL            string          `json:"forks_url"`
	KeysURL             string          `json:"keys_url"`
	CollaboratorsURL    string          `json:"collaborators_url"`
	HooksURL            string          `json:"hooks_url"`
	BranchesURL         string          `json:"branches_url"`
	TagsURL             string          `json:"tags_url"`
	BlobsURL            string          `json:"blobs_url"`
	StargazersURL       string          `json:"stargazers_url"`
	ContributorsURL     string          `json:"contributors_url"`
	CommitsURL          string          `json:"commits_url"`
	CommentsURL         string          `json:"comments_url"`
	IssueCommentURL     string          `json:"issue_comment_url"`
	IssuesURL           string          `json:"issues_url"`
	PullsURL            string          `json:"pulls_url"`
	MilestonesURL       string          `json:"milestones_url"`
	NotificationsURL    string          `json:"notifications_url"`
	LabelsURL           string          `json:"labels_url"`
	ReleasesURL         string          `json:"releases_url"`
	Recommend           bool            `json:"recommend"`
	Gvp                 bool            `json:"gvp"`
	Homepage            string          `json:"homepage"`
	Language            string          `json:"language"`
	ForksCount          int64           `json:"forks_count"`
	StargazersCount     int64           `json:"stargazers_count"`
	WatchersCount       int64           `json:"watchers_count"`
	DefaultBranch       string          `json:"default_branch"`
	OpenIssuesCount     int64           `json:"open_issues_count"`
	HasIssues           bool            `json:"has_issues"`
	HasWiki             bool            `json:"has_wiki"`
	IssueComment        bool            `json:"issue_comment"`
	CanComment          bool            `json:"can_comment"`
	PullRequestsEnabled bool            `json:"pull_requests_enabled"`
	HasPage             bool            `json:"has_page"`
	License             interface{}     `json:"license"`
	Outsourced          bool            `json:"outsourced"`
	ProjectCreator      string          `json:"project_creator"`
	Members             []string        `json:"members"`
	PushedAt            time.Time       `json:"pushed_at"`
	CreatedAt           time.Time       `json:"created_at"`
	UpdatedAt           time.Time       `json:"updated_at"`
	Parent              interface{}     `json:"parent"`
	Paas                interface{}     `json:"paas"`
	Stared              bool            `json:"stared"`
	Watched             bool            `json:"watched"`
	Permission          Permission      `json:"permission"`
	Relation            string          `json:"relation"`
	AssigneesNumber     int64           `json:"assignees_number"`
	TestersNumber       int64           `json:"testers_number"`
	Assignee            []User          `json:"assignee"`
	Testers             []User          `json:"testers"`
	Status              string          `json:"status"`
	Programs            []interface{}   `json:"programs"`
	Enterprise          Enterprise      `json:"enterprise"`
	ProjectLabels       []ProjectLabels `json:"project_labels"`
	IssueTemplateSource string          `json:"issue_template_source"`
}

type Namespace struct {
	ID      int64  `json:"id"`
	Type    string `json:"type"`
	Name    string `json:"name"`
	Path    string `json:"path"`
	HTMLURL string `json:"html_url"`
}

type User struct {
	ID                int64  `json:"id"`
	Login             string `json:"login"`
	Name              string `json:"name"`
	AvatarURL         string `json:"avatar_url"`
	URL               string `json:"url"`
	HtmlUrl           string `json:"html_url"`
	Remark            string `json:"remark"`
	FollowersURL      string `json:"followers_url"`
	FollowingURL      string `json:"following_url"`
	GistsURL          string `json:"gists_url"`
	StarredURL        string `json:"starred_url"`
	SubscriptionsURL  string `json:"subscriptions_url"`
	OrganizationsURL  string `json:"organizations_url"`
	ReposURL          string `json:"repos_url"`
	EventsURL         string `json:"events_url"`
	ReceivedEventsURL string `json:"received_events_url"`
	Type              string `json:"type"`
}

type Permission struct {
	Pull  bool `json:"pull"`
	Push  bool `json:"push"`
	Admin bool `json:"admin"`
}

type UserInfo struct {
	ID                int64       `json:"id"`
	Login             string      `json:"login"`
	Name              string      `json:"name"`
	AvatarURL         string      `json:"avatar_url"`
	URL               string      `json:"url"`
	HtmlUrl           string      `json:"html_url"`
	Remark            string      `json:"remark"`
	FollowersURL      string      `json:"followers_url"`
	FollowingURL      string      `json:"following_url"`
	GistsURL          string      `json:"gists_url"`
	StarredURL        string      `json:"starred_url"`
	SubscriptionsURL  string      `json:"subscriptions_url"`
	OrganizationsURL  string      `json:"organizations_url"`
	ReposURL          string      `json:"repos_url"`
	EventsURL         string      `json:"events_url"`
	ReceivedEventsURL string      `json:"received_events_url"`
	Type              string      `json:"type"`
	Blog              interface{} `json:"blog"`
	Weibo             interface{} `json:"weibo"`
	Bio               string      `json:"bio"`
	PublicRepos       int64       `json:"public_repos"`
	PublicGists       int64       `json:"public_gists"`
	Followers         int64       `json:"followers"`
	Following         int64       `json:"following"`
	Stared            int64       `json:"stared"`
	Watched           int64       `json:"watched"`
	CreatedAt         time.Time   `json:"created_at"`
	UpdatedAt         time.Time   `json:"updated_at"`
	Company           interface{} `json:"company"`
	Profession        interface{} `json:"profession"`
	Wechat            interface{} `json:"wechat"`
	Qq                interface{} `json:"qq"`
	Linkedin          interface{} `json:"linkedin"`
	Email             string      `json:"email"`
}

type V8RepositoryList struct {
	TotalCount int64          `json:"total_count"`
	Data       []V8Repository `json:"data"`
}

type V8Namespace struct {
	ID           int64  `json:"id"`
	Type         string `json:"type"`
	Name         string `json:"name"`
	Path         string `json:"path"`
	CompleteName string `json:"complete_name"`
	CompletePath string `json:"complete_path"`
	Description  string `json:"description"`
}

type V8Creator struct {
	ID                 int64  `json:"id"`
	Username           string `json:"username"`
	Name               string `json:"name"`
	Remark             string `json:"remark"`
	Pinyin             string `json:"pinyin"`
	AvatarURL          string `json:"avatar_url"`
	IsEnterpriseMember bool   `json:"is_enterprise_member"`
	IsHistoryMember    bool   `json:"is_history_member"`
	Outsourced         bool   `json:"outsourced"`
}

type V8Repository struct {
	ID                      int64       `json:"id"`
	Name                    string      `json:"name"`
	Path                    string      `json:"path"`
	Public                  int64       `json:"public"`
	EnterpriseID            int64       `json:"enterprise_id"`
	CreatedAt               time.Time   `json:"created_at"`
	UpdatedAt               time.Time   `json:"updated_at"`
	SecurityHoleEnabled     bool        `json:"security_hole_enabled"`
	Namespace               V8Namespace `json:"namespace"`
	Creator                 V8Creator   `json:"creator"`
	PathWithNamespace       string      `json:"path_with_namespace"`
	NameWithNamespace       string      `json:"name_with_namespace"`
	ScanCheckRun            bool        `json:"scan_check_run"`
	IsFork                  bool        `json:"is_fork"`
	ParentProject           interface{} `json:"parent_project"`
	Status                  int64       `json:"status"`
	StatusName              string      `json:"status_name"`
	Outsourced              bool        `json:"outsourced"`
	RepoSize                int64       `json:"repo_size"`
	CanAdminProject         bool        `json:"can_admin_project"`
	MembersCount            int64       `json:"members_count"`
	LastPushAt              time.Time   `json:"last_push_at"`
	WatchesCount            int64       `json:"watches_count"`
	StarsCount              int64       `json:"stars_count"`
	ForkedCount             int64       `json:"forked_count"`
	EnableBackup            bool        `json:"enable_backup"`
	HasBackups              bool        `json:"has_backups"`
	Vip                     bool        `json:"vip"`
	Recomm                  bool        `json:"recomm"`
	Template                interface{} `json:"template"`
	TemplateEnabled         bool        `json:"template_enabled"`
	Description             string      `json:"description"`
	GetDefaultBranch        string      `json:"get_default_branch"`
	ReleasesCount           int64       `json:"releases_count"`
	TotalPrCount            int64       `json:"total_pr_count"`
	IsStar                  bool        `json:"is_star"`
	UsedTemplateCount       int64       `json:"used_template_count"`
	ForkEnabled             bool        `json:"fork_enabled"`
	PullRequestsEnabled     bool        `json:"pull_requests_enabled"`
	NameWithoutTopNamespace string      `json:"name_without_top_namespace"`
}
